package com.tanhua.dubbo.api;

import com.tanhua.api.VisitorsApi;
import com.tanhua.app.interceptor.UserThreadLocal;
import com.tanhua.model.mongo.Visitors;
import org.dom4j.Visitor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;

import java.util.Calendar;
import java.util.List;

public class VisitorsApiImpl implements VisitorsApi {

    @Autowired
    private MongoTemplate mongoTemplate;


    /**
     * 保存访客数据
     *  对于同一个用户，一天之内只能保存一次访客数据
     */
    @Override
    public void save(Visitors visitors) {
        Query query = Query.query(Criteria.where("userid").is(UserThreadLocal.getid())
                .and("visitorUserId").is(visitors.getVisitorUserId())
        .and("visitDate").is(visitors.getDate()));

        if (!mongoTemplate.exists(query,Visitors.class)){
            mongoTemplate.save(query);
        }

    }
//查询访客信息, 谁看过我
    @Override
    public List<Visitors> QueryVisitorsList(Long getid, Long data) {
//        1.封装查询条件
        Criteria criteria = Criteria.where("userId").is(getid);
//        2.判断时间是否为空,如果不是.设置时间作为查询条件,大于当前时间的访客
        if (data != null) {
            Criteria.where("date").is(data);
        }
//        3.设置查询参数,最多查询5条参数,按照时间排序
        Query query = Query.query(criteria).limit(5).with(Sort.by(Sort.Order.desc("date")));
//        4.查询
        List<Visitors> visitorList = mongoTemplate.find(query, Visitors.class);
//        5.返回结果
        return visitorList;
    }
}
